﻿// ***********************************************************************
// Assembly         : AccesoDatos
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="AD_OrdenamientoEstructura.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// The ClasesAccesoDatos namespace.
/// </summary>
namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
    /// <summary>
    /// Class AD_OrdenamientoEstructura.
    /// </summary>
    public class AD_OrdenamientoEstructura
    {
        /// <summary>
        /// Crs the e_ ordenamiento estructural.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="codEstructura">The cod estructura.</param>
        /// <param name="codSubEstructura">The cod sub estructura.</param>
        /// <param name="codSubTipoEstructura">The cod sub tipo estructura.</param>
        public void CRE_OrdenamientoEstructural(SqlCommand comando, int codEstructura, int codSubEstructura,int codSubTipoEstructura)
        {
            try
            {
                string sp = "SP_CRE_ORDENAMIENTOESTRUCTURAL";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@ORDEST_CODESTRUCTURA", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@ORDEST_CODSUBESTRUCTURA", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@ORDEST_CODSUBTIPOESTRUCTURA", SqlDbType.Int));


                comando.Parameters[0].Value = codEstructura;
                comando.Parameters[1].Value = codSubEstructura;
                comando.Parameters[2].Value = codSubTipoEstructura;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ ordenamiento estructural by i ds.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="codEstructura">The cod estructura.</param>
        /// <param name="codSubEstructura">The cod sub estructura.</param>
        /// <param name="codSubTipoEstructura">The cod sub tipo estructura.</param>
        /// <returns>System.Int32.</returns>
        public int SEL_OrdenamientoEstructuralByIDs(SqlCommand comando, int codEstructura, int codSubEstructura, int codSubTipoEstructura)
        {
            try
            {
                string sp = "SEL_OrdenamientoEstructuralByIDs";
                int cant_ord = 0;
                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@ORDEST_CODESTRUCTURA", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@ORDEST_CODSUBESTRUCTURA", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@ORDEST_CODSUBTIPOESTRUCTURA", SqlDbType.Int));


                comando.Parameters[0].Value = codEstructura;
                comando.Parameters[1].Value = codSubEstructura;
                comando.Parameters[2].Value = codSubTipoEstructura;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                MOD_OrdenamientoEstructural obj = new MOD_OrdenamientoEstructural();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    cant_ord = Convert.ToInt32(dt.Rows[i]["ORDEST_CANT"]);


                }

                return cant_ord;


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ grid_ ordenamiento estructural.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <returns>List{MOD_OrdenamientoEstructural}.</returns>
        public List<MOD_OrdenamientoEstructural> SEL_Grid_OrdenamientoEstructural(SqlCommand comando)
        {
            try
            {
                string sp = "SP_SEL_Grid_OrdenamientoEstructural";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<MOD_OrdenamientoEstructural> lista = new List<MOD_OrdenamientoEstructural>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    MOD_OrdenamientoEstructural obj = new MOD_OrdenamientoEstructural();
                    obj.ORDEST_codestructura = Convert.ToInt32(dt.Rows[i]["ORDEST_CODIGO"]);
                    obj.ORDEST_estructura = dt.Rows[i]["EST_NOMBRE"].ToString();
                    obj.ORDEST_subestructura = dt.Rows[i]["CLASUB_NOMBRE"].ToString();
                    obj.ORDEST_subtipoestructura = dt.Rows[i]["SUBTIPOEST_NOMBRE"].ToString();
                    
                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Des the l_ ordenamiento estructural.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="codigo">The codigo.</param>
        public void DEL_OrdenamientoEstructural(SqlCommand comando, int codigo)
        {
            try
            {
                string sp = "SP_DEL_OrdenamientoEstructural";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@ORDEST_CODIGO", SqlDbType.Int));

                comando.Parameters[0].Value = codigo;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ cascada_ sub estructuras.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="codEstructura">The cod estructura.</param>
        /// <returns>List{MOD_OrdenamientoEstructural}.</returns>
        public List<MOD_OrdenamientoEstructural> SEL_Cascada_SubEstructuras(SqlCommand comando, int codEstructura)
        {
            try
            {
                string sp = "SP_SEL_SUBESTRUCTURA_BY_ESTRUCTURA";
             
                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@ORDEST_CODESTRUCTURA", SqlDbType.Int));
                


                comando.Parameters[0].Value = codEstructura;
              

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<MOD_OrdenamientoEstructural> lista = new List<MOD_OrdenamientoEstructural>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    MOD_OrdenamientoEstructural obj = new MOD_OrdenamientoEstructural();
                    obj.ORDEST_codsubestructura = Convert.ToInt32(dt.Rows[i]["CLASUB_CODCLASUB"]);
                    obj.ORDEST_subestructura = dt.Rows[i]["CLASUB_NOMBRE"].ToString();
                    
                    lista.Add(obj);


                }

                return lista;


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ cascada_ sub tipo estructuras.
        /// </summary>
        /// <param name="comando">The comando.</param>
        /// <param name="codEstructura">The cod estructura.</param>
        /// <param name="codSubEstructura">The cod sub estructura.</param>
        /// <returns>List{MOD_OrdenamientoEstructural}.</returns>
        public List<MOD_OrdenamientoEstructural> SEL_Cascada_SubTipoEstructuras(SqlCommand comando, int codEstructura, int codSubEstructura)
        {
            try
            {
                string sp = "SP_SEL_SUBTIPOESTRUCTURA_BY_SUBESTRUCTURA";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@ORDEST_CODSUBESTRUCTURA", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@SUBEST_CODIGO", SqlDbType.Int));


                comando.Parameters[0].Value =codSubEstructura ;
                comando.Parameters[1].Value = codEstructura;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<MOD_OrdenamientoEstructural> lista = new List<MOD_OrdenamientoEstructural>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    MOD_OrdenamientoEstructural obj = new MOD_OrdenamientoEstructural();
                    obj.ORDEST_codsubtipoestructura = Convert.ToInt32(dt.Rows[i]["SUBTIPOEST_CODSUBTIPOEST"]);
                    obj.ORDEST_subtipoestructura = dt.Rows[i]["SUBTIPOEST_NOMBRE"].ToString();

                    lista.Add(obj);


                }

                return lista;


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }
    }
}
